﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace Dziennik_ProfilNauczyciela.Wystawianie_ocen {
    public partial class WystawOcene : Form {
        int uid;
        int pid;
        public WystawOcene(string uczen, string klasa, string przedmiot, int userIdUcznia, int idPrzedmiotu) {
            InitializeComponent();
            uid = userIdUcznia;
            pid = idPrzedmiotu;
            label_Przedmiot.Text = przedmiot;
            label_Uczen.Text = uczen + ", kl. " + klasa;
            SprawdzZawartoscOkna();
        }

        private void button1_Click(object sender, EventArgs e) {
            WpiszOcene();
            Close();
        }

        private void button2_Click(object sender, EventArgs e) {
            Close();
        }

        private void textBox2_TextChanged(object sender, EventArgs e) {
            SprawdzZawartoscOkna();
        }

        void SprawdzZawartoscOkna() {
            bool ocenaOK = false;
            bool zaCoOk = false;
            if (textBox_Ocena.Text.Length == 1) {
                try {
                    if (Convert.ToInt32(textBox_Ocena.Text[0].ToString()) >= 1 && Convert.ToInt32(textBox_Ocena.Text[0].ToString()) <= 6) {
                        ocenaOK = true;
                    }
                }
                catch (Exception ex) { }
            }
            else if (textBox_Ocena.Text.Length == 2) {
                try {
                    int c = Convert.ToInt32(textBox_Ocena.Text[0].ToString());
                    int z = textBox_Ocena.Text[1];
                    if ((c == 1 && z == '+') || (c == 6 && z == '-') || (c >= 2 && c <= 5 && (z == '+' || z == '-'))) {
                        ocenaOK = true;
                    }
                }
                catch (Exception ex) { }
            }

            if (textBox_ZaCo.Text.Length == 0) {
                zaCoOk = false;
            }
            else {
                zaCoOk = true;
            }

            if (zaCoOk) {
                textBox_ZaCo.BackColor = SystemColors.Window;
            }
            else {
                textBox_ZaCo.BackColor = Color.Crimson;
            }

            if (ocenaOK) {
                textBox_Ocena.BackColor = SystemColors.Window;
            }
            else {
                textBox_Ocena.BackColor = Color.Crimson;
            }

            if (zaCoOk && ocenaOK) {
                button_Ok.Enabled = true;
            }
            else {
                button_Ok.Enabled = false;
            }
        }

        void WpiszOcene() {
            double ocena = Convert.ToInt32(textBox_Ocena.Text[0].ToString());
            if(textBox_Ocena.Text.Length == 2){
                if(textBox_Ocena.Text[1] == '+'){
                    ocena += 0.3;
                }
                else if(textBox_Ocena.Text[1] == '-'){
                    ocena -= 0.3;
                }
            }
            int waga = (int)numericUpDown_Waga.Value;
            string zaCo = textBox_ZaCo.Text;
            
            SqlCommand cmd = new SqlCommand("execute dziennik.dbo.wystawOcene @ocena, @waga, @zaCo, @idUcznia, @idPrzedmiotu", SQLInterface.conn);
            cmd.Parameters.Add(new SqlParameter("@ocena", ocena));
            cmd.Parameters.Add(new SqlParameter("@waga", waga));
            cmd.Parameters.Add(new SqlParameter("@zaCo", zaCo));
            cmd.Parameters.Add(new SqlParameter("@idUcznia", uid));
            cmd.Parameters.Add(new SqlParameter("@idPrzedmiotu", pid));
            try {
                cmd.ExecuteNonQuery();
            }
            catch (SqlException ex) {
                MessageBox.Show("Błąd bazy danych - nie masz uprawnień do wystawienia tej oceny");
            }
        }
        private void textBox1_TextChanged(object sender, EventArgs e) {
            SprawdzZawartoscOkna();
        }
    }
}
